/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package compilador.analisadorSintatico.comandos;

import compilador.analisadorLexico.Token;
import compilador.analisadorLexico.TokenClass;
import compilador.analisadorSintatico.Producao;
import compilador.analisadorSintatico.TokenReader;
import compilador.analisadorSintatico.simboloGramatical.NaoTerminal;
import compilador.analisadorSintatico.simboloGramatical.SimboloGramatical;
import compilador.analisadorSintatico.simboloGramatical.Terminal;

/**
 *
 * @author  Matheus Cardoso
 * <BREAK> ::= break ';'
 */
public class BREAK extends Producao {

    @Override
    public SimboloGramatical derivar() throws Exception {
        //chama o token reader para correr os tokens
        TokenReader tokenReader = TokenReader.getInstance();

        Token token = null;

        //adiciona o break à árvore
        ((NaoTerminal) simbolo).add(new Terminal(tokenReader.seeCurrent()));

        //retorna o token após break mas não move index
        token = tokenReader.seeNext();

        if (token.getAtributo().equals(";")) {
            tokenReader.consome();
            ((NaoTerminal) simbolo).add(new Terminal(token));
        } else {
             erro("Comando" + this.getClass().getSimpleName()
                    + "mal formado - ';' não encontrado");
        }
        return simbolo;
    }

    @Override
    public void setSimbolo() {
        simbolo = new NaoTerminal(this.getClass().getSimpleName());
    }
}
